if else |
The instruction if else is used to choose between two blocks of code. This instruction allows executing one block of code or other block of code depending on certain conditions. In the code shown below, if the input value is greater than 10, the instruction sequence A will be executed, otherwise the instruction sequence B will be executed. Under no circumstances both instruction sequences will be executed. La instrucción if else es usada para escoger entre dos bloques de código. La instrucción permite ejecutar un bloque de código u otro bloque de código dependiendo en ciertas condiciones. En el código mostrado debajo, si la entrada es mayor a 10, la secuencia de instrucciones A será ejecutada, de otro modo la secuencia de instrucciones B será ejecutada. Bajo ninguna circunstancia se ejecutaran ambas secuencias de instrucciones. |
Program.cpp |
void Program::Window_Open(Win::Event& e) { const int input = tbxInput .IntValue; if (input > 10) { //_______ Instruction Sequence A ... } else { //_______ Instruction Sequence B ... } } |
Problem 1 |
Create a project called BasicIf using Wintempla and write the code shown below. Cree un proyecto llamado BasicIf usando Wintempla y escriba el código mostrado debajo. |
Tip |
In the previous code, the user inputs a value of 1.7, which is neither greater than 10 nor equal to 10. Thus, the value of z is set to 222.2. On the other hand, in the case presented below the user inputs a value of 98, and the value of z is set to 15. En el código previo, el usuario proporciona un valor de 1.7, el cual no es mayor que 10 ni igual a 10. Así, el valor de z es fijado en 222.2. Por otro lado, en el caso presentado abajo el usuario proporcionar un valor de 98, y el valor de z es fijado en 15. |
Problem 2 |
Compute the output of the following code. Calcule la salida del código siguiente. |
Program.cpp |
void Programa::Window_Open(Win::Event& e) { int n =15; if (n>5) { this->MessageBox(L"Martes", L"A", MB_OK); } else { this->MessageBox(L"Lunes", L"B", MB_OK); } this->MessageBox(L"Jueves", L"C", MB_OK); } |
Tip |
The instruction if else has two blocks. Each block may have one or more instructions. However, when there is more than one instruction in any of the blocks the curly brackets are necessary. Thus, the codes A, B, C and D are equivalent. La instrucción if else tiene dos bloques. Cada bloque puede tener una o más instrucciones. Sin embargo, cuando hay más de una instrucción en cualquiera de los bloques las llaves son necesarias. Así, los códigos A, B, C y D son equivalentes. |
Program.cpp |
//___________________________ Code A if (x>5) { z = z+2; } else { z--; } //___________________________ Code B if (x>5) z = z+2; else z--; //___________________________ Code C if (x>5) z = z+2; else z--; //___________________________ Code D if (x>5) z = z+2; else z--; |
Tip |
The codes W, X, Y and Z are equivalent. Los códigos W, X, Y y Z son equivalentes. |
Program.cpp |
//___________________________ Code W int x = 22; double y = 11.1; double z = 18.5; if (x > 10) y = 23; else y = 22; z = 55; // it always executes //___________________________ Code X int x = 22; double y = 11.1; double z = 18.5; if (x > 10) y = 23; else y = 22; z = 55; // it always executes //___________________________ Code Y int x = 22; double y = 11.1; double z = 18.5; if (x > 10) { y = 23; } else { y = 22; } z = 55; // it always executes //___________________________ Code Z int x = 22; double y = 11.1; double z = 18.5; if (x > 10) y = 23; else y = 22; z = 55; // it always executes |
Tip |
The codes Q, R, S and T are equivalent. Los códigos Q, R, S y T son equivalentes. |
Program.cpp |
//___________________________ Code Q int a = 22; double b = 11.1; double c = 18.5; if (a < 100) { b = 23.1; c ++; } else b = 32.4; c = 72.35; // it always executes //___________________________ Code R int a = 22; double b = 11.1; double c = 18.5; if (a < 100) { b = 23.1; c ++; } else b = 32.4; c = 72.35; // it always executes //___________________________ Code S int a = 22; double b = 11.1; double c = 18.5; if (a < 100){ b = 23.1; c ++; } else b = 32.4; c = 72.35; // it always executes //___________________________ Code T int a = 22; double b = 11.1; double c = 18.5; if (a < 100) { b = 23.1; c ++; } else b = 32.4; c = 72.35; // it always executes |
Problem 3 |
Compute the output of the following code. Calcule la salida del código siguiente. |
Program.cpp |
void Programa::Window_Open(Win::Event& e) { int n = 15; if (n < 5) { this->MessageBox(L"Henry", L"Enrique", MB_OK); n += 10; } else { n *= 2; this->MessageBox(Sys::Convert::ToString(n), L"n", MB_OK); } this->MessageBox(L"Thursday", L"Jueves", MB_OK); } |
Problem 4 |
Compute the output of the following code. Calcule la salida del código siguiente. |
Program.cpp |
void Programa::Window_Open(Win::Event& e) { int n = -8, m = 120; if (n < m) { m++; this->MessageBox(L"Henry", L"Enrique", MB_OK); n /= 10; } else { n *= 2; this->MessageBox(Sys::Convert::ToString(n), L"n", MB_OK); } this->MessageBox(Sys::Convert::ToString(n), Sys::Convert::ToString(m), MB_OK); } |
Problem 5 |
Compute the output of the following code. Calcule la salida del código siguiente. |
Program.cpp |
void Programa::Window_Open(Win::Event& e) { int n = 15; if (n < 5) this->MessageBox(L"Feb", L"Dia", MB_OK); else this->MessageBox(L"Sep", L"Mes", MB_OK); this->MessageBox(L"Jueves", L"Hola", MB_OK); this->MessageBox(L"Jorge", L"Hello", MB_OK); } |
Problem 6 |
Compute the output of the following code. Calcule la salida del código siguiente. |
Program.cpp |
void Programa::Window_Open(Win::Event& e) { int n = 0; if (n > 1) this->MessageBox(L"example", L"Abc", MB_OK); this->MessageBox(L"none", L"Zys", MB_OK); } |
Problem 7 |
Compute the output of the following code. Calcule la salida del código siguiente. |
Program.cpp |
void Programa::Window_Open(Win::Event& e) { int n = 0; if (n < 1) this->MessageBox(L"Texas", L"a", MB_OK); this->MessageBox(L"Los Angeles", L"b", MB_OK); if (n < 1) this->MessageBox(L"New York", L"c", MB_OK); else this->MessageBox(L"Hoboken", L"d", MB_OK); this->MessageBox(L"Arizona", L"e", MB_OK); } |
Problem 8 |
Compute the output of the following code. Calcule la salida del código siguiente. |
Program.cpp |
void Programa::Window_Open(Win::Event& e) { int n = 10; if (n < 1) this->MessageBox(L"Texas", L"a", MB_OK); this->MessageBox(L"Los Angeles", L"b", MB_OK); if (n < 1) this->MessageBox(L"New York", L"c", MB_OK); else this->MessageBox(L"Hoboken", L"d", MB_OK); this->MessageBox(L"Arizona", L"e", MB_OK); } |
Problem 9 |
Compute the output of the following code. Calcule la salida del código siguiente. |
Program.cpp |
void Programa::Window_Open(Win::Event& e) { int n = 10; if (n < 1) this->MessageBox(L"Cancun", L"a", MB_OK); n -= 11; this->MessageBox(L"Acapulco", L"b", MB_OK); if (n < 1) this->MessageBox(L"Puerto Vallarta", L"c", MB_OK); else { this->MessageBox(L"Ixtapa", L"d", MB_OK); this->MessageBox(L"Guayabitos", L"e", MB_OK); } } |
Problem 10 |
Create a project called Controlador that takes an input pressure and returns an adjustment value. If the pressure is bigger than 100 atm the adjustment values should be 15% of the pressure value. Otherwise, the program will return 20% of the input pressure value. Input pressure: 225 atm Adjustment: 33.75 Input pressure: 90 atm Adjustment: 18 Cree un proyecto llamado Controlador que toma un valor de presión de entrada y regrese un valor de ajuste. Si la presión es mayor de 100 atmosferas el valor de ajuste es 15% del valor de la presión. De otro modo, el programa regresará 20% de la presión de entrada. Presión de entrada: 225 atm Valor de ajuste: 33.75 Presión de entrada: 90 atm Valor de ajuste: 18 |
Tip |
You can use the function pow to compute the power of a numeric value. For instance, pow(2, 3) is 8. In Java and C#, all math functions are inside Math, for instance: Math.abs, Math.pow, etc. xy = pow(x, y); Usted puede usar la función pow para elevar a una potencia un valor numérico. Por ejemplo, pow(2, 3) es 8. En Java y C#, las funciones de matemáticas están dentro de Math, por ejemplo: Math.abs, Math.pow, etc. xy = pow(x, y); |
Problem 11 |
Create a project called Bank that takes an input present amount of money and returns the future value after 12 months. If the input value is bigger than 5000.00, the bank offers a monthly interest rate of i=1.5%. Otherwise, the bank offers a monthly interest rate i = 0.22%. In the formula below, n represents the number of months. Future = Present (1 + i)n Present (input): 7500.00 Future (output): 8967.14 Future = 7500.00(1+0.015) 12 Present (input): 2872.39 Future (output): 2949.15 Future = 2872.39 (1+0.0022) 12 Cree un proyecto llamado Bank que toma una cantidad presente de dinero y regresa el valor futuro después de 12 meses. Si el valor de entrada es mayor a 5000.00, el banco ofrece una tasa de interés mensual i = 1.5%. De otro modo, el banco ofrece una tasa de interés mensual i = 0.22%. En la fórmula de abajo, n representa el número de meses. Futuro = Presente (1 + i)n Presente (entrada): 7500.00 Futuro (salida): 8967.14 Presente (entrada): 2872.39 Futuro (salida): 2949.15 |
Problem 12 |
Compute the output and table of variables of the following code. Calcule la salida y la tabla de variables del código siguiente. |
Program.cpp |
void Programa::Window_Open(Win::Event& e) { wstring texto; int n=0, a=11; double b = 20, c=40, z=50.3; n = a/2; b = a/2; z = a/2.0; Sys::Format(texto, L"%i, %i, %f <-> %f <-> %f", n, a, b, c, z); this->MessageBox(texto, L"Data", MB_OK); } |
Problem 13 |
Compute the output and table of variables of the following code. Calcule la salida y la tabla de variables del código siguiente. |
Program.cpp |
void Programa::Window_Open(Win::Event& e) { wstring texto; int n = 550; const int a = -15; double b = 20, c=40, z=22.2; if (a <= 0) { n = a/2; b = a/2; } if (z == 22.2) { z = a/2.0; } Sys::Format(texto, L"%i, %i, %f <-> %f <-> %f", n, a, b, c, z); this->MessageBox(texto, L"Data", MB_OK); } |
Problem 14 |
Compute the output and table of variables of the following code. Calcule la salida y la tabla de variables del código siguiente. |
Program.cpp |
void Programa::Window_Open(Win::Event& e) { wstring texto; int n = 33; const int a = 15; double b = 20, c=40, z=22.2; if (a <= 10) { n = a/2; b = a/2; } else { n++; z /= 11.0; } if (z != 22.2) { z = a/2.0; } else { n--; z *= 2; b *= M_PI; } Sys::Format(texto, L"%d, %i, %g, %d, %.2f", a, b, c, n, z); this->MessageBox(texto, L"ABC", MB_OK); } |
Operator ? |
In some cases, it is possible to use the operator ? to write an instruction if else to assign a variable value. The code G and H shown below are equivalent. Basically, the operator ? is the same as if else plus and variable set using the equal sign. C, C++, Java and C# supports the ? operator. En algunos casos, es posible usar el operador ? para escribir una instrucción if else para asignar una variable. Los códigos G y H mostrados debajo son equivalentes. Básicamente, el operador de ? es lo mismo que un if else más la asignación de una variable usando el signo de igual. C, C++, Java y C# soportan el operador de ?. |
Program.cpp |
//____________________________ Code G double x = 14.7; int y = 0; if (x > 32.4) { y = 10; } else { y = 28; } //____________________________ Code H double x = 14.7; int y = (x > 32.4) ? 10 : 28; |
Problem 15 |
Write a equivalent code using the operator ? Escriba el código equivalente usando el operator ? |
Program.cpp |
int input = tbxInput.IntValue; bool isEven = false; if (input%2 == 0) { isEven = true; } else { isEven = false; } |
Problem 16 |
Write a equivalent code using the operator ? Escriba el código equivalente usando el operator ? |
Program.cpp |
const int input = tbxInput.IntValue; double y = 0.0; if (input%10 == 0) { y = M_PI; } else { y = 2.0 * M_PI; } |
Problem 17 |
Write a equivalent code using the operator ? Escriba el código equivalente usando el operator ? |
Program.cpp |
const bool isArea = true; double z = 0.0; const double r = 5.0; if (isArea == true) { z = M_PI*r*r; } else { z = 2.0 * M_PI*r; } |
Radio Button |
A radio button is usually used in groups of radio buttons. They allow choosing one option from a set of options. Always select one radio button of the group. The most important property from a radio button is Checked, and it can take the values of true or false. Un radio button es usualmente usado en grupos de botones de radio. Estos permiten escoger una opción desde un conjunto de opciones. Siempre seleccione un botón del grupo. La propiedad más importante del radio button es Checked, y puede tomar los valores de true o false. |
Problem 18 |
Write a program called Converter to convert from centimeters to inches and the other way as shown. The radio button has a property called Checked that can be true or false. Observe that the labels are modified when the user selects the radio buttons. To do this, generate the Click event for both radio buttons and change the Text of the labels. Double click the radio buttons to open the edit the properties and events of the radio buttons. Escriba un programa llamado Converter para convertir de centimetros a pulgadas y viceversa como se muestra. El botón de radio tiene una propiedad llamada Checked que puede valer true o false. Observe que las etiquetas son modificadas cuando el usuario selecciona los radio buttons. Para hacer esto, genere el evento Click de los radio buttons y modifique la propiedad Text de las etiquetas. Haga doble clic en los radio buttons para editar las propiedades y eventos de los radio buttons. |
Converter.cpp |
void Converter::Window_Open(Win::Event& e) { this->radioPulgadas.Checked = true; ... } void Converter::btConvertir_Click(Win::Event& e) { const bool isInches = radioPulgadas.Checked; ... } |
Problem 18a |
Repeat the previous problem using Win32, called your program Converter32. Repetir el problema previo usando Win32, llame a su proyecto Converter32. |
Converter32.cpp |
//_________________________________________________ Converter32.cpp #include "stdafx.h" #include "Converter32.h" INT_PTR Window_Open(HWND hWnd, WPARAM wParam, LPARAM lParam) { ::SetWindowText(hWnd, L"Converter32"); ::SendMessage(::GetDlgItem(hWnd, ID_RADIO_CENTIMETROS), BM_SETCHECK, BST_CHECKED, 0); return TRUE; } INT_PTR btConvertir_Click(HWND hWnd, WPARAM wParam, LPARAM lParam) { wchar_t text[32]; //_______________________________ Extract Input ::GetWindowText(::GetDlgItem(hWnd, ID_TBX_INPUT), text, 32); const double input = _wtof(text); double output = 0.0; if (::SendMessage(::GetDlgItem(hWnd, ID_RADIO_CENTIMETROS), BM_GETCHECK, 0, 0) == BST_CHECKED) { output = input*2.54; } else { output = input / 2.54; } //_______________________________ Display the result _snwprintf_s(text, 32, _TRUNCATE, L"%f", output); ::SetWindowText(::GetDlgItem(hWnd, ID_TBX_OUTPUT), text); return TRUE; } INT_PTR radioCentimetros_Click(HWND hWnd, WPARAM wParam, LPARAM lParam) { ::SetWindowText(::GetDlgItem(hWnd, ID_LB_INPUT), L"in"); ::SetWindowText(::GetDlgItem(hWnd, ID_LB_OUTPUT), L"cm"); return TRUE; } INT_PTR radioPulgadas_Click(HWND hWnd, WPARAM wParam, LPARAM lParam) { ::SetWindowText(::GetDlgItem(hWnd, ID_LB_INPUT), L"cm"); ::SetWindowText(::GetDlgItem(hWnd, ID_LB_OUTPUT), L"in"); return TRUE; } INT_PTR CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { switch (message) { case WM_INITDIALOG: return Window_Open(hWnd, wParam, lParam); case WM_COMMAND: if (LOWORD(wParam) == ID_BT_CONVERTIR) return btConvertir_Click(hWnd, wParam, lParam); if (LOWORD(wParam) == ID_RADIO_CENTIMETROS) return radioCentimetros_Click(hWnd, wParam, lParam); if (LOWORD(wParam) == ID_RADIO_PULGADAS) return radioPulgadas_Click(hWnd, wParam, lParam); if (LOWORD(wParam) == IDCANCEL) ::EndDialog(hWnd, 0); break; } return (INT_PTR)FALSE; } int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE, LPTSTR cmdLine, int cmdShow) { ::DialogBox(hInstance, MAKEINTRESOURCE(IDD_DIALOG1), NULL, WndProc); return 0; } |
Problem 19 |
Repeat the previous problem using Java, called your program ConverterJ. Repetir el problema previo usando Java, llame a su proyecto ConverterJ. |
Problem 20 |
Repeat the previous problem using C#, called your program ConverterS. Repetir el problema previo usando C#, llame a su proyecto ConverterS. |
Form1.cs |
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace ConverterS { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { labelInput.Text = "cm"; labelOutput.Text = "in"; radioInches.Checked = true; } private void btConvert_Click(object sender, EventArgs e) { ... } private void radioInches_CheckedChanged(object sender, EventArgs e) { if (radioInches.Checked == true) { ... } private void radioCentimeter_CheckedChanged(object sender, EventArgs e) { ... } } } |